package cn.wangliang181230.json.parser;

public class UnifiedExceptionJSONParserProxy implements IJSONParser {

	private final IJSONParser jsonParser;

	public UnifiedExceptionJSONParserProxy(IJSONParser jsonParser) {
		this.jsonParser = jsonParser;
	}


	@Override
	public String toJSONString(Object obj) throws JSONParseException {
		try {
			return jsonParser.toJSONString(obj);
		} catch (JSONParseException e) {
			throw e;
		} catch (Exception e) {
			throw new JSONParseException("obj转换为JSON字符串失败", e);
		}
	}

	@Override
	public <T> T parse(String jsonText, Class<T> targetClass) throws JSONParseException {
		try {
			return jsonParser.parse(jsonText, targetClass);
		} catch (JSONParseException e) {
			throw e;
		} catch (Exception e) {
			throw new JSONParseException("解析JSON字符串为目标类型（" + targetClass.getName() + "）失败", e);
		}
	}

}
